#include "ClientSocketReceiver.h"
#include "BotonPartida.h"
#include "Mutex.h"
#include "Protocolo.h"
#include <gtkmm.h>
#include <unistd.h>
#include "Configuracion.h"
#include "Log.h"

ClientSocketReceiver::ClientSocketReceiver(Mutex *sincronizadorTareas,
        InterfaceDeComunicacion *juego, bool *finalizoTarea) {
    this->sincronizadorTareas = sincronizadorTareas;
    this->juego = juego;
    this->finalizoTarea = finalizoTarea;
}

ClientSocketReceiver::~ClientSocketReceiver() {
}

void *ClientSocketReceiver::run() {
    Mensaje mensaje_recibido;
    while (recibirConAvisoDeLong(buffer, TAMANIO_MAXIMO_MENSAJE) != -1) {
        mensaje_recibido.limpiar();
        mensaje_recibido.hidratar(buffer);
        juego->notificar(mensaje_recibido.data);
        sincronizadorTareas->lock();
        sincronizadorTareas->esperar();
        sincronizadorTareas->unlock();
    }

    Log::loguear(MINFO,"Cerrando escuchador...");
    this->exit();
    return NULL;
}
